<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php学习笔记[010]</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="show"><span>039 正则表达式四[匹配，替换，分割]</span></div>
<?php include 'include/top.php';?>
<div class="text">
<b>匹配</b>
我们新增加一个全部匹配函数<br />
<strong>preg_match_all</strong>：匹配目标并把结果用2维数组返回，分别分有正则符号数组和无正则符号数组<br />
使用语法<strong>preg_match_all(正则模块,内容模块,返回数组模块,[可选参数]给出的正则表达式匹配的内容并将结果以指定的顺序放到返回的数组中)</strong><br />
我们用一个例子来说明这个函数的用法<br />
<div class="code">
&lt;?php<br />
$str1='{abc}def{hij}klm{nop}qrst';<br />
$mode1='/{(.*)}/U';//将内容作为整体并且禁止贪婪匹配<br />
preg_match_all($mode1,$str1,$arr1,2);//选择了第二种顺序分别有012三个存放方式<br />
print_r($arr1);<br />
?&gt;</div>
我们来看匹配的结果：
<div class="effect">
<?php
$str1='{abc}def{hij}klm{nop}qrst';
$mode1='/{(.*)}/U';//将内容作为整体并且禁止贪婪匹配
preg_match_all($mode1,$str1,$arr1,2);//选择了第二种顺序分别有012三个存放方式
print_r($arr1);
?>
</div>
</div>
<div class="text">
<b>替换</b>
正则替换比普通的替换功能强了许多，我们列举3个例子来说明他的使用价值<br />
<strong>模糊替换，数组替换，计算替换</strong><br />
正则替换函数<strong>preg_replace(正则表达式,替换内容,文本内容,[可选]替换次数)</strong>
我们分别用3个例子来说明这个函数的用法<br />
模糊替换：<br />
<div class="code">
&lt;?php<br />
$mode2='/{(.*)}/U';//加入U可以禁止贪婪匹配<br />
$str2='{abc}def{hij}klm{nop}qrst';<br />
$strsub='中文';<br />
echo preg_replace($mode2,$strsub,$str2,2);//限制只替换2次<br />
?&gt;<br />
</div>我们来看结果：
<div class="effect">
<?php
$mode2='/{(.*)}/U';//加入U可以禁止贪婪匹配
$str2='{abc}def{hij}klm{nop}qrst';
$strsub='中文';
echo preg_replace($mode2,$strsub,$str2,2);//限制只替换2次
?>
</div>
数组替换<br />
<div class="code">&lt;?php<br />
  $mode3=array('/{abc}/','/{hij}/','/{nop}/');<br />
  $strsub3=array('第一个参数','第二个','第三个');<br />
  echo preg_replace($mode3,$strsub3,$str2);//使用数组替换对应的内容<br />
  ?&gt;<br />
</div>我们来看结果：
<div class="effect">
<?php
$mode3=array('/{abc}/','/{hij}/','/{nop}/');
$strsub3=array('第一个参数','第二个','第三个');
echo preg_replace($mode3,$strsub3,$str2);//使用数组替换对应的内容
?>
</div>
运算替换<br />
<div class="code">&lt;?php<br />
  $mode4='/(abc|hij|nop)/e';//使用e使的MD5函数生效使用（）将正则内容存放在内存中<br />
  echo @preg_replace($mode4,&quot;MD5(\\1)&quot;,$str2);<br />
  ?&gt;<br />
</div>我们来看结果：
<div class="effect">
<?php
$mode4='/(abc|hij|nop)/e';//使用e使的MD5函数生效使用（）将正则内容存放在内存中
echo @preg_replace($mode4,"MD5(\\1)",$str2);
?>
</div>
</div>
<div class="text">
<b>分割</b>
我们来接触一个分割函数<br />
<strong>preg_split(正则表达式,分割字符串,[可选]分割次数)</strong><br />
用途过于广泛，我们只取一个例子来说明<br />
<div class="code">
&lt;?php<br />
$str5='0000.aaaaa+bbbbb,ccccc-88888';<br />
$mode5='/[.+,-]/';//建立一个原子表<br />
$arr5=preg_split($mode5,$str5);<br />
print_r($arr5);<br />
?&gt;</div>我们来看它分割的效果：
<div class="effect">
<?php
$str5='0000.aaaaa+bbbbb,ccccc-88888';
$mode5='/[.+,-]/';//建立一个原子表
$arr5=preg_split($mode5,$str5);
print_r($arr5);
?>
</div>
</div>




</body>
</html>
